package rmaqlc31.basic;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class _08HelloHttpServlet extends HttpServlet{
	
	// 웹 어플리케이션은 HTTP 프로토콜 기반에서
	// 실행되기 때문에, 서블릿 역시 HTTP 프로토콜을 지원해야 함
	// 즉, HTTP가 제공하는 기능(쿠키, 세션등)을 이용할 수 있어야 함
	
	// 따라서, 기존의 GenericSerlvet에 HTTP 처리기능을
	// 추가시킨 HttpServlet을 이용하면 이러한 요구사항
	// 대부분이 해결됨
	
	// GenericServlet vs HttpServlet
	// 요청/응답 처리시 ServletRequest/ServletResponse가
	// HttpServletRequest/HttpServletResponse로 바뀜
	// service 메서드도 일부 변경됨
	// Http 프로토콜이 제공하는 메서드들도 서블릿에서 처리 가능
	// 즉, get, post, head, put, trace, options, delete 등은
	// do~로 시작하는 메서드로 처리하도록 변경됨
	
	// HttpServlet 사용시 주의사항!
	// HttpServlet을 이용해서 서블릿을 작성하는 경우
	// service 메서드는 따로 재정의할 필요 없음
	// 단, Http 처리 메서드인 get, post를 구현한
	// doGet, doPost 메서드만 재정의 하는 것을 추천!
	
	// HttpServlet에 추가된 메서드
	// req.getContext
	// req.getCookie
	// req.getHeader
	// req.getMethod
	// req.getQueryString
	// req.getSession
	// req.getRequestURI
	// req.getRequestURL
	
	// res.addCookie
	// res.addHeader
	// res.sendRedirect
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		System.out.println("Hello, HttpServlet!!@");
		
		resp.setContentType("text/html; charset=UTF-8");
		PrintWriter out = resp.getWriter();
		
		out.print("<html><head></head>");
		out.print("<body><h1>HelloHttpServlet</h1>");
		out.print("</body></html>");
	}
}
